import axios from 'axios'
import store from '@/store'
// baseUrl 设置/超时时间配置
const instance = axios.create({
  // 本地存储是跟着域名走的
  baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net',
  timeout: 5000
})
// 全局注入token
instance.interceptors.request.use(config => {
  // 把token注入
  // js拿到store中的token
  const token = store.state.user.profile.token
  // 请求header中添加
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, e => {
  return Promise.reject(e)
})

// token失效跳回到登录页
instance.interceptors.response.use(res => {
  // 200-300作为成功的判断
  // 判断自定义状态码,后端决定了http状态倒是是什么: 然后前端做成功和失败处理
  return res.data
  // axiox自己将拿到的数据封装到data对象中,若这里直接返回res,页面取数据需要.data
  // 响应拦截器直接将res.data返回出来,页面数据拿数据就直接省略.data
}, e => {
  // 400+状态码
  return Promise.reject(e)
})
/**
 * @param {String} - url  请求地址
 * @param {String} - method  请求类型
 * @param {Object} - submitData  对象类型，提交数据
 */
const request = (url, method, submitData) => {
  return instance({
    url,
    method,
    // []是vuex的计算方式;toLowerCase将传进来的方法固定为小写
    [method.toLowerCase() === 'get' ? 'params' : 'data']: submitData
  })
}
export default request
